Unity 添加Click事件的几种方法总结 您所在的位置:网站首页 function select button Unity 添加Click事件的几种方法总结

Unity 添加Click事件的几种方法总结

2023-08-13 06:07| 来源: 网络整理| 查看: 265

所有的点击事件的生效其实都是实现了接口:IPointerClickHandler 里的 OnPointClick 先看看源码: 接口: 在这里插入图片描述 Button: 在这里插入图片描述 所以其实要实现点击事件,就是要实现接口。

总结了以下方法实现点击事件:

Button(指组件)添加点击事件: 1.Button组件仔细看看他的各个参数发现一个On Click()/鼠标单击() 在这里插入图片描述 下面有3个选择的东西 1.运行生效时间(大概),三个选项 不生效,编译时和运行时,运行时。 2.对象,该对象可以选择场景内和资源里面的对象。(如果直接是脚本,我还没搞清楚,暂留疑问,后面再填,欢迎大佬补充) 3.No function 位置 就是选择需要执行的方法。

操作步骤:

1.写一个脚本,脚本里面写一个你需要点击后执行的方法。

public void ListClick() { Debug.Log("Button绑定function的点击事件!"); }

2.随便挂在一个物体上,我挂在场景里面的一个空物体(名为test)。 在这里插入图片描述

3.选择对象 先选中你脚本所挂的对象 在这里插入图片描述 选要执行的方法 在这里插入图片描述 然后点击就会执行ListClick()的方法。 如果有疑问,为什么可以这样实现操作呢? 我大概解释一下我的理解: Button组件是官方的一个组件,而组件能够如此操作是用了委托的方式来实现。 如果不了解委托或者Unity委托事件,可以自行baidu学习。

Button添加listener实现点击事件 给需要点击事件的对象挂上下面的脚本,前提是物体要有button组件!!!!:

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class ListenerClick : MonoBehaviour { // Start is called before the first frame update void Start() { GetComponent().onClick.AddListener(ButtonClick); } // Update is called once per frame void Update() { } void ButtonClick() { Debug.Log("Listener 的方法!"); } }

此处其实跟上面的方法是一样的,也是用了委托。AddListener(function)说的直白一点,就是用了函数指针。用我的话翻译一下: obj.GetComponent().onClick.AddListener(ButtonClick); 大概意思就是:给obj的button组件的onClick里面添加一个方法,点击生效。 但如果不是Button,又不想添加Button组件呢? 实现接口IPointerClickHandler-OnPointClick(不一定是click,也肯能是up,down啥的) 在这里插入图片描述 此处我用Image实现的点击事件。 添加了个脚本实现了OnPointClick接口:

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; public class InterFaceClick : MonoBehaviour,IPointerClickHandler { public void OnPointerClick(PointerEventData eventData) { Debug.Log("接口实现的点击事件"); //throw new System.NotImplementedException(); } // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { } }

(实际上发现实现接口,不用命名空间UnityEngine.UI,只用using UnityEngine.EventSystems就行了) 然后保存就完成啦。 切记切记切记!!!!! UGUI 的点击等事件,其实都是由射线完成的,所以如果你的对象要想有点击响应,那么一定要勾选 光影投射目标/RaycastTarget!!!!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有